vtd: fix/cleanup minor issues with multi-page qinval support
authorKeir Fraser <keir.fraser@citrix.com>
Wed, 18 Feb 2009 08:57:56 +0000 (08:57 +0000)
committerKeir Fraser <keir.fraser@citrix.com>
Wed, 18 Feb 2009 08:57:56 +0000 (08:57 +0000)
Remove MAX_QINVAL_PAGES.  Rely on whoever changes NUM_QINVAL_PAGES to
change corresponding IQA_REG_QS value also.

Signed-off-by: Allen Kay <allen.m.kay@intel.com>
xen/drivers/passthrough/vtd/iommu.h
xen/drivers/passthrough/vtd/qinval.c

index 46eb4cdb4048806cd76d5dfc1c5f7f64c1d05719..fd8b9e124df5d760292973ab117436ec4adba5ed 100644 (file)
@@ -397,8 +397,8 @@ struct poll_info {
     u32 udata;
 };
 
-#define MAX_QINVAL_PAGES 8
 #define NUM_QINVAL_PAGES 1
+#define IQA_REG_QS       0    // derived from NUM_QINVAL_PAGES per VT-d spec.
 #define QINVAL_ENTRY_NR (PAGE_SIZE_4K*NUM_QINVAL_PAGES/sizeof(struct qinval_entry))
 #define qinval_present(v) ((v).lo & 1)
 #define qinval_fault_disable(v) (((v).lo >> 1) & 1)
index 6f2d576f84fb42484f38608b4afe25b5e78a3d9d..2e73cd0b6396397d9c7b54c69226d99d9c1d1cdb 100644 (file)
@@ -445,8 +445,7 @@ int qinval_setup(struct iommu *iommu)
      * registers are automatically reset to 0 with write
      * to IQA register.
      */
-    if ( NUM_QINVAL_PAGES <= MAX_QINVAL_PAGES )
-        qi_ctrl->qinval_maddr |= NUM_QINVAL_PAGES - 1;
+    qi_ctrl->qinval_maddr |= IQA_REG_QS;
     dmar_writeq(iommu->reg, DMAR_IQA_REG, qi_ctrl->qinval_maddr);
 
     /* enable queued invalidation hardware */